﻿
namespace AspNetInfo.Diagnostics
{
    /// <summary>
    /// Classes implementing this interface can be added as diagnostic tests to a class implementing the ITestFixture interface.
    /// </summary>
    public interface ITest
    {
        /// <summary>
        /// Friendly name for the test that can be used in the UI to identify the test.
        /// </summary>
        string Name { get; }

        /// <summary>
        /// Description of what diagnostics this test will perform.
        /// </summary>
        string Description { get; }

        /// <summary>
        /// Result holds the outcome of the diagnostic procedure performed by the Execute() method.
        /// </summary>
        TestResult Result { get; }

        /// <summary>
        /// Execute performs the diagnostic procedure and stores the result in the Result property.  
        /// </summary>
        /// <returns>A reference the result of the diagnostic procedure</returns>
        TestResult Execute();
    }
}
